Skip to content

Каур Александр. Технология SEQ-MPI. Умножение разреженных матриц. Элементы типа double. Формат хранения матрицы – столбцовый (CCS). Вариант 5#124

Open
kaur41 wants to merge 3 commits intolearning-process:masterfrom
kaur41:kaur_a_multy_matrix

Conversation

@kaur41
Copy link

@kaur41 kaur41 commented Mar 1, 2026

Задание

Задача: Умножение разреженных матриц в формате CCS (Column Compressed Storage)
Вариант: 5
Технология: MPI (с поддержкой SEQ для последовательной версии)

Описание

В рамках работы реализованы последовательная и параллельная версии алгоритма умножения двух разреженных матриц, представленных в формате CCS.

Последовательная версия (SEQ) выполняет умножение через транспонирование первой матрицы и последующее умножение на вторую, служа эталоном для проверки корректности.

Параллельная версия (MPI) распределяет столбцы второй матрицы между процессами. Корневой процесс транспонирует первую матрицу и рассылает её всем процессам с помощью MPI_Bcast. Каждый процесс умножает свою локальную часть столбцов второй матрицы на транспонированную матрицу и отправляет результат корню с использованием MPI_Send. Корневой процесс собирает все частичные результаты и объединяет их в итоговую матрицу.

Ключевые особенности

  • Реализованы SEQ и MPI версии алгоритма
  • Эффективное хранение разреженных матриц в формате CCS
  • Транспонирование матрицы с предварительным подсчётом количества ненулевых элементов
  • Использование MPI_Bcast для рассылки транспонированной матрицы и MPI_Send/MPI_Recv для сбора результатов
  • Корректная обработка нулевых элементов с пороговым отсечением (1e-10)
  • Полное покрытие функциональными тестами (матрицы различной размерности и плотности, проверка структурных инвариантов)
  • Тесты производительности для 1, 2, 4 и 8 процессов на матрицах 2000×2000

Тестирование и производительность

Добавлены функциональные тесты для проверки корректности умножения на различных входных данных, а также тесты производительности для оценки времени работы MPI-версии. Результаты измерений представлены в отчёте.


  • Статус CI: Все CI-задачи (сборка, тесты, генерация отчёта) успешно проходят на моей ветке в моем форке
  • Директория и именование задачи: Я создал директорию kaur_a_multy_matrix в соответствии с требованиями (<фамилия><первая_буква_имени><короткое_название_задачи>)
  • Полное описание задачи: Я предоставил полное описание задачи в теле pull request
  • clang-format: Мои изменения успешно проходят clang-format локально в моем форке (нет ошибок форматирования)
  • clang-tidy: Мои изменения успешно проходят clang-tidy локально в моем форке (нет предупреждений/ошибок)
  • Функциональные тесты: Все функциональные тесты успешно проходят локально на моей машине
  • Тесты производительности: Все тесты производительности успешно проходят локально на моей машине
  • Ветка: Я работаю в ветке kaur_a_multy_matrix, названной точно так же, как директория моей задачи
  • Правдивое содержание: Я подтверждаю, что все сведения, указанные в этом pull request, являются точными и достоверными

@kaur41 kaur41 requested a review from allnes as a code owner March 1, 2026 16:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants